// pages/ydshop/ydshop.js
const {
  baseURL
} = require("../../utils/request")
const camp = require("../../api/camp")
const goods = require("../../api/goods")
const order = require("../../api/order")
Page({

  /**
   * 页面的初始数据
   */
  data: {
    orderId:"",
    hidden:true,
    nocancel:false,
    qrCodeUrl:``,
    camps:"",
    campId:"",
    active:0,
    currentTab:0,
    selectGoodsList:[],
    goodslist:[],
    baseURL:baseURL,
    cartList:[],
    cartLength:0,
    showCart:false,
    amount:0,
    // campId="",
  },
  cancel: function(){
    this.setData({
         hidden: true
    });
},

/**
 *  点击确认
 */
confirm: function(){
    this.setData({
      // modalHidden: true,
      hidden:true
    })

  },
  
  // 点击去结算新增订单
  onClickjiesuan(){
     //从本地获取购物车缓存
     var carList=wx.getStorageSync('cartList-' + this.data.campId)
     console.log("结算购物车缓存： ",carList)
     var obj={
         userId:wx.getStorageSync('userInfo').userId,
         campId:this.data.campId,
         total:this.data.amount,
         qrcode:"", //二维码
         orderDetail:[...carList]
     }
     order.goodsOrderAdd(obj).then((res)=>{
         console.log("goodsOrderAdd: ",res)
         if(res.code==200){
           console.log("res购物车123123123123：",res)


        
         


             //订单信息添加成功
             //清空当前购物车
             wx.setStorageSync('cartList-' + this.data.campId,[])
             this.setData({
                 cartList: [],
                 orderId:res.msg,
                 hidden:false
             })
              //  c查询二维码
         console.log("wkyxxyxxyxxyxxyxxy22222222222222222:",this.data.orderId)
         this.generateQRCode(this.data.orderId)
             //刷新购物车
             this.setCartList()
             this.setData({
              showCart: false
            })

           





// 查询营地
console.log("wx.getStorageInfoSync(userInfo)",wx.getStorageSync('userInfo'))
camp.getAppointmentByUserId(wx.getStorageSync("userInfo").userId).then(res=>{
console.log(res)
if(res.code==200){
console.log("123123")
this.setData({
  active:res.data[0].campId,
  selectGoodsList:res.data,
  campId:res.data[0].campId,
})
console.log("wwwwwwwwwwwwwwwwwwwww",this.data)
}
})

         }
 
     })



  },
  onClickButton(){
    this.setData({
      showCart: true
    })
 
  },
  switchNav: function (e) {
    var page = this;
    var campId = e.target.id;
    // this.data.campId=e.target.id;
    console.log("12222"+campId)

    // 查询营地对应的商品信息
    goods.goodsList({campId}).then(res=>{
  console.log("goodssss123123:",res)
  if(res.code==200){
    console.log("123123")
    this.setData({
      campId:campId,
      goodslist:res.data
    })
    console.log("datawky12312312312312312:",this.data)
  }
})
    console.log("e=",e)
    if (this.data.currentTab == campId) {
      return false;
    } else {
      page.setData({
        currentTab: campId
      });
    }
    page.setData({
      active: campId
    });
    this.setCartList();
  },


    controlShowFloat(str){
    // 通俗易懂版
    // console.log(str);
    // if(str == 'notShow'){
    //     this.showFloat = false;
    // }else {
    //     this.showFloat = true;
    // }
    
    // 简洁版
    if(str != 'notShow') return ;
    this.showCart = false;

},





   // 从本地存储中查询购物车数据
   setCartList () {
    var cartList = wx.getStorageSync('cartList-' + this.data.campId)
    if (cartList && cartList.length > 0) {
      this.setData({
        cartList: cartList
      })
    } else {
      this.setData({
        cartList: []
      })
    }
    this.sumAmount();
    this.setGoodsNum();
  },
  // 设置商品已经加入购物车的数量
  setGoodsNum() {
    
    var cartList = this.data.cartList;
    var goodslist = this.data.goodslist;
    for (let i = 0; i < cartList.length; i++) {
      const cartItem = cartList[i];
      for (let j = 0; j < goodslist.length; j++) {
        const goodsItem = goodslist[j];
        if (cartItem.goodsId == goodsItem.goodsId) {
          goodslist[j].num = cartItem.num;
          break;
        }
      }
    }
    this.setData({
      goodslist: goodslist
    })
  },
  // 当在商品数量变化时
  onStepperChange (event) {
    console.log("onStepperChange event", event);
    let index = event.currentTarget.dataset.index;
    var goodslist = this.data.goodslist;
    var cartList = this.data.cartList;

    goodslist[index].num = event.detail;
    // 当商品的选购数量改变时，同步购物车的数量
    // var goodsList = this.data.goodsList;
    var tag = 0;
    for (let j = 0; j < cartList.length; j++) {
      if (goodslist[index].goodsId == cartList[j].goodsId) {
        cartList[j].num = goodslist[index].num;
        tag++;
        break;
      }
    }
    if (tag == 0) {
      cartList.push(goodslist[index])
    }
    // console.log
    const uniqueCartList = cartList.filter((item, index, self) => {
      return index === self.findIndex(obj => obj.goodsId === item.goodsId) && item.num > 0;
    });
    this.setData({
      goodslist: goodslist,
      cartList: uniqueCartList,
      cartLength: uniqueCartList.length
    })
    console.log("uniqueCartList", uniqueCartList)

    console.log("cartLength", this.data.cartLength)
    
    this.sumAmount();
  },
  // 当在购物车数量变化时
  onCartStepperChange (event) {
    console.log("onCartStepperChange event", event);
    let index = event.currentTarget.dataset.index;
    var cartList = this.data.cartList;
    cartList[index].num = event.detail;
    const uniqueCartList = cartList.filter((item, index, self) => {
      return item.num > 0;
    });
    // 当购物车中的数量改变时，同步商品的下标
    var goodslist = this.data.goodslist;
    for (let j = 0; j < goodslist.length; j++) {
      if (cartList[index].goodsId == goodslist[j].goodsId) {
        goodslist[j].num = cartList[index].num;
        break;
      }
    }
    this.setData({
      cartList: uniqueCartList,
      goodslist: goodslist
    })
    this.sumAmount();
  },
    // 计算总价
  sumAmount() {
    var cartList = this.data.cartList;
    var amount = 0;
    for (let i = 0; i < cartList.length; i++) {
      const item = cartList[i];
      amount += item.num * item.goodsPrice;
    }
    this.setData({
      amount: amount,
      
      cartLength: cartList.length
    })
    wx.setStorageSync('cartList-' + this.data.campId, this.data.cartList)
  },
  // 弹出购物车页面
  onShowCart() {
    this.setData({
      showCart: true
    })
   
  },
  guanbi(){
    this.setData({
      showCart: false
    })
  },


  getUserLocation(){
  wx.getLocation({
  type:'gcj02',
  success:(res)=>{
      console.log(res,"返回的数据")
        this.setData({
            latitude: res.latitude,
            longitude: res.longitude,
          });
  wx.chooseLocation({
  longitude: this.data.longitude,
  latitude: this.data.latitude,
  success:(res)=>{
    this.setData({
      camps: res.address,
    
    });
  console.log("chooseLocation 返回的数据",res);
  console.log("getProvinceFromAddress 返回的数据",this.getProvinceFromAddress(res.address));

  }
})
  }

})
  },




    getProvinceFromAddress(address) {
      // 地址字符串（示例）
      const addressStr = address;
     
      // 定义一个包含所有省级名称（包括自治区、直辖市等）的数组
      // 注意：这里只列出了部分示例，实际使用时需要补充完整
      const provinces = [
        '北京市', '天津市', '上海市', '重庆市', '河北省', '山西省', '辽宁省', '吉林省', '黑龙江省',
        '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省',
        '广东省', '海南省', '四川省', '贵州省', '云南省', '陕西省', '甘肃省', '青海省', '台湾省',
        '内蒙古自治区', '广西壮族自治区', '西藏自治区', '宁夏回族自治区', '新疆维吾尔自治区',
        '香港特别行政区', '澳门特别行政区'
      ];
     
      // 将地址字符串按空格分割成数组
      const addressParts = addressStr.split(' ');
     
      // 遍历分割后的数组，查找匹配的省级名称
      for (let i = 0; i < addressParts.length; i++) {
        const part = addressParts[i];
        console.log("part", part)
        for (let j = 0; j < provinces.length; j++) {
          const item = provinces[j];
          
          if (part.includes(item)) {
            return item; // 找到匹配的省级名称，返回
          }
        }
      }
     
      // 如果没有找到匹配的省级名称，返回null或空字符串
      return null; // 或 return '';
    },

    failure(){

    },

  Zulin:function(e){
    var goodsId = e.target.id;
    console.log(goodsId)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getUserLocation()
// 查询营地
    console.log("wx.getStorageInfoSync(userInfo)",wx.getStorageSync('userInfo'))
    camp.getAppointmentByUserId(wx.getStorageSync("userInfo").userId).then(res=>{
  console.log(res)
  if(res.code==200){
    console.log("123123")
    this.setData({
      active:res.data[0].campId,
      selectGoodsList:res.data,
      campId:res.data[0].campId,
    })
    console.log("wwwwwwwwwwwwwwwwwwwww",this.data)
  }
})

},





  

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
   
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
  generateQRCode: function(text) {
    wx.request({
      url: 'http://localhost:8080/generateQRCode?text='+text, // 后端API的正确URL
      method: 'GET',
      responseType: 'arraybuffer', // 设置响应类型为arraybuffer以处理二进制数据
      success: function(res) {
        console.log("Response from server:", res); // 打印整个响应对象
        if (res.statusCode === 200) {
          console.log("Success response data:", res.data); // 打印成功响应的数据
          // 将二进制数据转换为Base64编码的字符串
          const base64 = wx.arrayBufferToBase64(res.data);
          // 创建一个Data URL，以便可以在<image>标签中使用
          const qrCodeUrl = `data:image/png;base64,${base64}`;
          this.setData({
            qrCodeUrl: qrCodeUrl // 更新页面数据
          });


// 根据订单id修改订单信息
const userId1=wx.getStorageSync("userInfo").userId;
const erweima=this.data.qrCodeUrl
console.log("图片13123123：阿斯顿撒旦：",erweima)

const listorder={
orderId:this.data.orderId,
userId:userId1,
qrcode:this.data.qrCodeUrl
}
order.Orderxiugai(listorder).then(res=>{
  console.log(res)
  if(res.code==200){
  console.log("123123")


  }
  })





          console.log("Updated QR Code URL:", qrCodeUrl); // 打印更新后的二维码URL
        } else {
          console.error('Failed to generate QR code', res);
        }
      }.bind(this), // 使用bind(this)来保持this的上下文
      fail: function(err) {
        console.error('Request failed', err);
      }
    });
  },
  // onClickButton() {
  //   Toast('点击按钮');
  // },
})